package adfc2.actions;

import adfc2.core.Action;
import adfc2.core.Creature;

/**
 * Класс мгновенного действия, выполняющегося за 1 тик.
 * <p/>
 * Потомки должны переопределить метод {@see perform}.
 */
public abstract class InstantAction extends Action {
    public InstantAction(Creature actor) {
        super(actor);
    }

    @Override
    public void cancel() {
    }

    @Override
    public final void tick(long dt) {
        if (perform()) {
            completed();
        } else {
            failed();
        }
    }

    /**
     * Выполнить мгновенное действие. true --- выполнено успешно, false --- неуспешно
     */
    protected abstract boolean perform();
}
